/*
 * monitor.h
 *
 *  Created on: 15/11/2014
 *      Author: dario
 */

#ifndef MONITOR_H_
#define MONITOR_H_

#include <string>
#include <iostream>
#include <sys/shm.h>

#define MAXQ 5
#define TAMBUF 20
#define TAM0 16
#define TAM1 35
#define TAM2 25
#define TAM3 20
#define TAM12 12
#define MAXCLI 10
#define MAX_PARTIDAS 50
#define TAM_NOMBRE 20

#define TORNEO_UP 5

typedef struct {
	int  id,
		 socket,
		 puntaje,
		 disponible,
		 cantPartidas,
		 conectado,
		 posicionEnTorneo; //1 conectado puntaje dentro del torneo
	char nombre[TAM_NOMBRE];

} t_jugador;

typedef struct {
	int  pid,
	     jugador1,
	     jugador2,
	     terminoPartida,
	     jugadorGanador; //ganador (1 o 2)
} t_partida;

typedef struct {
	t_jugador jugador[MAXCLI];
	int cantPartidas;
	t_partida partidas[MAX_PARTIDAS];
	int cantJugadores;
	int t_chequeo;
	int tiempo_torneo;
	int tiempo_espera_conex_max;
	int nivel_dificultad;
	int cantidad_rescates;
	//int flagFinConexiones;
	int partidaCaida; //1 se cayo la partida
} t_torneo;

t_torneo *torneo;

char *sem_name_M;
sem_t *SEM_M;

int memory_id;

int pidProcesoPadre;

void exitProcessMonitor(int sign);
void matarProcesosYEnviarMensajesFin();
void cerrarRecursosYTerminarEjecucion();
void ignoreSignals();

#endif /* MONITOR_H_ */
